﻿using Pe.Petecos.Comercial.Cross.Core.Constantes;
using Pe.Petecos.Comercial.Infraestructura.Core.Contract.General;
using Pe.Petecos.Comercial.Infraestructura.Model.General;
using Pe.Petecos.Comercial.Infraestructura.Repository.Base;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Pe.Petecos.Comercial.Infraestructura.Repository.Implements.General
{
    public class ClienteRepository : QueryRepository, IClienteRepository
    {
        public List<ClienteLogic> Buscar(int codigoCliente = 0, string codigoEstado = "", string nombreCliente = "", string numeroDocumento = "")
        {
            
            SqlParameter[] parametros = new SqlParameter[]
            {
                new SqlParameter("CODIGO_CLIENTE", SqlDbType.Int) { Value = (object)codigoCliente ?? DBNull.Value },
                new SqlParameter("CODIGO_ESTADO", SqlDbType.VarChar) { Value = (object)codigoEstado ?? DBNull.Value },
                new SqlParameter("NOMBRE_CLIENTE", SqlDbType.VarChar) { Value = (object)nombreCliente ?? DBNull.Value },
                new SqlParameter("NUMERO_DOCUMENTO", SqlDbType.VarChar) { Value = (object)numeroDocumento ?? DBNull.Value },
                new SqlParameter("PARAMETRO_ESTADO_GENERICO", SqlDbType.Int) { Value = DatosConstantes.Parametro.EstadoGenerico }
            };

            return this.dataBaseProvider.ExecuteStoreProcedure<ClienteLogic>("GRL.USP_CLIENTE_SEL", parametros).ToList();

        }
    }
}
